home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 16 / CU Amiga Magazine's Super CD-ROM 16 (1997-10-16)(EMAP Images)(GB)[!][issue 1997-11].iso / CUCD / Online / HBBS / TODO.TXT < prev    next >
Text File  |  1997-09-03  |  29KB  |  868 lines

  1. ToDo
  2. ====
  3.  
  4.  
  5.  
  6. Doors to create
  7. ---------------
  8.  
  9.   New User announcer
  10.   Nuker/Faker/Mover
  11.   Online DiZ editor
  12.   Multinode chat door
  13.   Dupe Checker
  14.   CREDSLEFT <CONF>
  15.  
  16.  
  17. Enforcer hits sometimes caused by the following doors:
  18. ======================================================
  19.  
  20. Extract_diz
  21.  
  22. Other Enforcer Hits
  23. ===================
  24.  
  25. If a door timeout has occurred everytime another door is started an enforcer hit is generated.
  26.  
  27. Misc
  28. ====
  29.  
  30.   the following doors must cope with the NOUSER paramater for OFFLINE file checking
  31.  
  32.     AddDIZToList      --> Done!
  33.     LHAHistory        --> Done!
  34.     Update_DIZ        --> It's extract_diz!
  35.     MoveFile          --> Done!
  36.     AddTime           --> Done!
  37.     AddCreds          --> Done!
  38.     Ask_Conf       Door Not Written Yet
  39.     ConFirm_UL        --> Done!
  40.     Check_Corrupt  Door Not Written Yet
  41.     New_DIZ           --> It's ModifyDIZ!
  42.     Modify_DIZ        --> Done!
  43.     Extract_DIZ       --> Done!
  44.  
  45.  
  46.   display a percentage read of the text file in the file listers.
  47.  
  48. !! change userdata so that uploaded/download bytes are float variables instead of
  49. !! ulong's
  50.  
  51.   when list of tagged files is reloaded the filesizes must be brought up to date
  52.  
  53.   time awarding is not working correctly.  583 mins added for a 700k file.. erm...
  54.  
  55.   have some variables in N_ND-> that doors can set before they call a DisplayScreen
  56.   @^DATA1@ .. @^DATA4@ are replaced with the data..  that would be very usefull
  57.   for custom door screens!
  58.  
  59.   add GL_CountDown flag to DOOR_GetLine()
  60.  
  61.   make the AskULFiles door display a list of the users files in the
  62.   current conference's partupload directory that need completing.
  63.  
  64.   fix "please insert volume xxx" when tagging file in the cd-rom conf if
  65.   no cd-rom is in the drive (assign not valid)
  66.  
  67.   update LHAHistory for .lzx/.lzh files too.
  68.  
  69.   make it so that if a file called "SentBy.TXT" is uploaded when doing
  70.   an upload the users SentBy is set to the first xx printable chars in
  71.   the file.  Then modify the SentBy door to tell the user this...!
  72.  
  73.   keyboard shortcuts for ALL options/windows etc. on node and control
  74.  
  75.   add option to override inactivity disconnects for local logins
  76.  
  77.   document "G N" at prompt (logs out without checking for tagged files)
  78.  
  79.   fix doortimeout crashes!
  80.  
  81.   explain use of snoopdos to find problems
  82.  
  83.   implement setting a door's task priority via the door config files..
  84.   e.g.
  85.     in HBBS:Commands/System enable stuff like XPR_Pri_1=2
  86.  
  87.   Creat InactivityTimeout door to be called when a timeout has occured!
  88.  
  89.   Create new frontend door that lets the user enter a username and password
  90.   without disturbing the on-screen ansi..
  91.  
  92.   Fix Memory Leaks.
  93.   --> CodeWatcher HBBS:Control reports a long list of unfreed memory!!!!
  94.       (although it only totals up to about 2k..)
  95.  
  96.   the shell door removes ='s from command lines
  97.  
  98.   Q doesn't quit the zippy search whenit gets to the end of a filelist
  99.  
  100.  
  101. XPR
  102. ===
  103.  
  104.   make it refresh when you un-zoom the window!
  105.  
  106.  
  107. Node
  108. ====
  109.  
  110.   disable gadgets on node control window if UseDevice is FALSE
  111.  
  112.  
  113. Comment
  114. =======
  115.  
  116.   if the sysop's handle is not valid it should cancel, and not ask for another handle!
  117.  
  118. CheckUser
  119. =========
  120.   make checkuser check for time left! and log user off if no time left!
  121.   At the moment a user logs in and gets to the command prompt then the
  122.   Command prompt logs the user off
  123.  
  124.  
  125. checktags
  126. =========
  127.   list tagged files in a table:  conf, size, filename
  128.  
  129.  
  130. addcreds
  131. ========
  132.  
  133.   add an autoawardmessage_x option todisplay a message if an auto award match was found!
  134.   (e.g. the user uploads an LSD release to an LSD bbs then display message "LSD Release Uploaded!")
  135.  
  136. LogOff
  137. ======
  138.  
  139.   when checking for tagged files, have an option to never be asked this again.
  140.   maybe, you've got these files tagged, sure ya wanna leave [Y]es,[N]o,Ne[V]er...
  141.  
  142.   if user selects never then we need to tell them how to turn the option back on again
  143.  
  144. Node_serial
  145. ===========
  146.  
  147.   make hangup work for initiated calls...
  148.   --> this should be OK now, still need to test though.
  149.  
  150. Docs
  151. ====
  152.  
  153.   Express that BBSGlobal->TotalUsers CANNOT be used to find the amount
  154.   of users in the userdata file (as deleted users can be overwritten)
  155.  
  156.   User should not compact the userdata file when the bbs is running!
  157.  
  158.   User is reminded to remove hbbs:system/data/users/<userdir> when removing a user..
  159.  
  160.   express that Logoff.Global script will always be executed, even if a logoff.<node> script
  161.   exists as well.
  162.  
  163. cmdprompt
  164. =========
  165.  
  166.   add "Sorry you've run out of time" to BBSStrings.CFG
  167.  
  168.  
  169. MailOptimize
  170. ============
  171.  
  172.   create a program to check the MailStats.CFG files in each mail directory and get
  173.   it to update the FirstMessage (and LastMessage ?) items so that mail scanning
  174.   is quicker (i.e. so hbbs doesn't have to attempt to open the files
  175.   Message_0.CFG -> Message_<actual first msg>.CFG)
  176.  
  177.   also have this program remove the expired messages..
  178.  
  179.   not forgetting to make it run once a day.  At every logoff would be a bad idea
  180.   as it may take a while! :-)
  181.  
  182.   this program would also have to update all users UnreadList.CFG in
  183.   HBBS:Mail/Users/<id> as it could contain references to deleted mail messages
  184.  
  185.   (note, possible way: make a list of all deleted messages in a list and check each
  186.   user against this list..)
  187.  
  188.  
  189. AccountEdit
  190. ===========
  191.  
  192.   check that user is not on-line already when in non SYSOPONLY mode (i.e. editing from
  193.   another node while the user is online is not allowed, to do this I need to send a
  194.   message to the node that the user is on to get it to halt while the pother use edits
  195.   the account, the data then needs to be copied to the user on-line data on the other
  196.   node.
  197.  
  198.   Make it display *'s next to account settings that are incorrect (e.g.
  199.   invalid access level, no conf access settings file specified etc..)
  200.  
  201.   make it so that you cannot edit your own account when you are online (it'll go wrong
  202.   at the moment) or better still, make it so that you can :-)
  203.  
  204.   account presets (use the AccountEdit door to load/save/define them)
  205.  
  206. ReadMail
  207. ========
  208.  
  209.   message reading (screen displaying), remove Continue [y/n] from screen..
  210.  
  211.   allow option for sysop to read other users private mailboxes...
  212.  
  213.   when scanning for mail to read, display the ctrl+c message but remove it when
  214.   scan is complete.
  215.  
  216.   If no mail is found when scanning then tell the user so.
  217.  
  218.   need option to read individual public mail messages.
  219.     e.g. "R P 2"
  220.  
  221.   perhaps swap the [N]ext/[P]rev round when reading a list of mail messages that
  222.   starts from the newest message.
  223.  
  224. HBBSCommon
  225. ==========
  226.  
  227.   add a routine to copy a list and it's contents
  228.  
  229.   record all calls to DoErrorMessage...
  230.   --> with a LogError()
  231.  
  232.   finish HBBS_LoadUser()
  233.  
  234.   fix HBBS_ValidUserHandle() ref: TotalUsers
  235.  
  236.   take the \r or \n from errstr in HBBS_LogError() (put there by asctime() ?)
  237.  
  238. FileLister
  239. ==========
  240.  
  241.   add option to lister(s) (FR, N) showing the last x files uploaded (e.g.  FR L 20 to show
  242.   the last 20 files uploaded in the current conf)
  243.  
  244. MailWrite
  245. =========
  246.  
  247.   filenote() the mail message .txt's!
  248.  
  249.   backup mail messages (when written) to an archive, name of msg would be
  250.   <Type>-<Conf>-<FromID>-<ToID/NAME>
  251.   so, when you write a mail it'll just add the file to an .LHA archive thus giving
  252.   you a space saving way of backing up your message base..
  253.  
  254.   notes: make the mail_write/mail_reply call a door with the names of the
  255.   filenames they create after each message has been saved to disk.
  256.  
  257.   allow the username Sysop, and replace it with BBSGlobal->SysopAccount
  258.  
  259.   if only one paramater and the parameter is more than 1 char then it must be some
  260.   user handles, therefore default to conference mail and send the mail
  261.  
  262.     e.g. E fred,barney
  263.  
  264. HBBSNode
  265. ========
  266.   add a GL_#? flag that tells the system to print out the contents of a string
  267.   every x microseconds while it is waiting for input.  This is a wicked idea.
  268.   Using this you can have cool ansi animations going on while you're waiting
  269.   at a prompt for example...
  270.  
  271.     implement: GL_ANSIANIM
  272.  
  273.     in N_ND create a pointer to a list which contains strings and call it
  274.     node:      struct List *N_ND->AnsiAnimList;
  275.  
  276.     this pointer must point to a valid list or be set to NULL and doors
  277.     must check it before they use it (well, the DOOR_GetLine() must...)
  278.  
  279. Shell
  280. =====
  281.   fix lockup bug and make cooler
  282.   (what lockup bug ?)
  283.   -> I've been using the shell lots recently and it's not gone wrong once.
  284.  
  285.   fix cd'ing into files !?! :-)
  286.   if the user types in one parameter, then check to see if it's a filename
  287.   if it is check to see if it's a directory.  if it is then CD into it.
  288.  
  289. Download
  290. ========
  291.  
  292.   still needs a sysop download
  293.  
  294.  
  295. Node_Misc.c
  296. ===========
  297.  
  298.   fix problem (not bug) with @^@ codes and special formatting..  I'm using sprintf()
  299.   to do the formatting at the moment, so you just use std 'C' % formatting options
  300.   like %-15s (-> @^-15s^ComputerType@ in a screen ), but if the item you are printing
  301.   is more that than the amount of chars you specify it will not chop the rest off...
  302.   the downside to this is that if you designs screens (like raider has done for me)
  303.   they kind of mess up when you use long strings etc...
  304.   --> nope, just use something like... @^-15.15s^ComputerType@ and it's fine
  305.  
  306.   Add Ctrl-C checking to DisplayScreen() and DisplaySpecialScreen()
  307.   DisplayScreen() needs more N_ND->OnlineStatus checking after pause prompts
  308.   --> almost done, needs fixing for await door special case
  309.  
  310. Other Stuff
  311. ===========
  312.  
  313.   create an Error Watcher program, which sets up a port called "HBBS_Error_X" (where x is
  314.   a number, so you can have more than one port..), then change hbbs_LogError()
  315.   so it checks for those ports and sends them the details of the error in a message.
  316.   Then a sysop can have a window pop up on his screen with the error... (great for
  317.   finding problems with a setup..)  you could also have a program like SendOLM in
  318.   HBBS:Utils that checks to see if a co-sysop or sysop is on-line and sends them the message
  319.   too!  Cool...
  320.  
  321. Frontend
  322. ========
  323.   call a door called 2NDPASSWORD just after the users password has been entered correctly
  324.   and before anything else happens.  Door_Continue and Door_Return need to be checked/set
  325.  
  326.   option to display screen instead of messages (i.e. user presses return at login prompt)
  327.  
  328.   make it check to see if the user is logged onto another node, if they are, deny access
  329.  
  330.   move some strings from N_ND->NodeSettings to the appropriate door's config file
  331.   (e.g. usernameprompt should really be in FrontEnd.CFG...)
  332.  
  333.   Fix bug with OLM's and FrontEnd (when you're typing in a node password)
  334.  
  335.   Implement Calls Allowed checking
  336.  
  337.   Time Checking (as in, can the user login at this time)
  338.  
  339. Structures.h
  340. ============
  341.  
  342.   Implement Extra#? settings that are defined in structures.h
  343.  
  344. Control
  345. =======
  346.  
  347.   Needs to report on Conflist/Conferences - ConfList/ConfLocation amount mismatch
  348.  
  349.  
  350.   Add option to Enable/Disable BBSGlobal->LogConfig from GUI.
  351.  
  352. AddCreds
  353. ========
  354.  
  355.   check that AddCreds door can accept a conference number as a parameter to allow
  356.   for easy implementation of conference accounting..
  357.  
  358.   CheckFiles is OK for this.
  359.  
  360.   but we need a global method of checking credits allowed that accepts a conference as well
  361.   or there's no point giving addcreds a conf number.
  362.   --> TagFile now calls the "OKToTag" system door
  363.  
  364. TagFile
  365. =======
  366.  
  367.   make the TagFile door call a door called "OKToTag" with the conference num and filename as
  368.   parameters (for easy implementation of conference accounting and file restriction doors)
  369.   (like passworded files..)
  370.   --> it now calls OKtoTAG with the following params <filename> <fullname> <size> <conf>
  371.  
  372.   Add File Password support (i.e. change tag door so search for a config file
  373.   that has a list of filenames, and passwords. (maybe a confnum too, depends wether you'll ever
  374.   have files of the same name in a difference conference..)
  375.  
  376.   Hmm, example config file (HBBS:Doors/System/TagFile/PasswordedFiles.CFG)
  377.  
  378.     Name_1=HydraBBSA13.LHA
  379.     Type_1=CONF ; could be CONF, or SYSTEM (i.e. filename can be full path if using SYSTEM)
  380.     Conf_1=5 ; HBBS Conf if CONF is used
  381.     Level_1=250 ; if you are below this access level you will be asked for the Password
  382.     Password_1=BETA ; where "BETA" is the actual password..
  383.  
  384.     Name_2=HBBS:System/Data/User.Data
  385.     Type_2=SYSTEM
  386.     Level_2=255
  387.     Password=DataFile
  388.  
  389.   oh, and we also need another config file with a list of files that cannot
  390.   be downloaded except by the sysop.. ie. HBBS:Doors/System/TagFile/RestrictedFiles.CFG
  391.  
  392.     File_1=HBBS:System/Data/User.Data
  393.     File_2=HBBS:Doors/System/TagFile/TagFile
  394.  
  395. OKtoTAG
  396. =======
  397.  
  398.   system door called by TAG_FILE.  should set doorreturn to NO if the file is NOT to be tagged.
  399.   the purpose of calling this door is for easy conference accounting implementation
  400.  
  401. NodeInput.C
  402. ===========
  403.  
  404.   Fix ctrl-x/up/down with GL_NODISTURB (door writers should not use GL_HISTORY until
  405.   this is fixed if possible..)
  406.  
  407.   have a cool DOOR_WriteTextSpecial() function that given the corrent "flags, timeouts
  408.   and string" will display text on the screen as if it was coming from a 300baud modem
  409.   as per the "wargames" film.
  410.  
  411.   Add option to toggle BBSGlobal->LogConfig from a keypress (like shift+F8) etc..
  412.  
  413.  
  414. AutoComment
  415. ===========
  416.  
  417.   Write a GUI for AutoComment and finish it!
  418.  
  419. Node
  420. ====
  421.  
  422.   remove the file NodeLocation/work/XPR_SkippedFiles.CFG when a user logs off.
  423.   in node_input.c/freedata() ?
  424.  
  425.   Fix HBBS_OnlineTime(), it doesn't return correct value if user never logs on.
  426.   (i.e. timeout at frontend)
  427.  
  428.   clear contents of hbbs:nodes/nodex/work
  429.  
  430.   implement reserving node
  431.   --> done
  432.  
  433.   make it so that the node watch windows can be opened on a different public screen
  434.   to that of the Control Program
  435.  
  436.   add routine to show all availiable public screens and use instead of a string gadget
  437.   when selecting screen to appear on.
  438.   (unless reqtools has this option...)
  439.  
  440. network mail! yeah!
  441.  
  442. option for sysop to set N_ND->DoorLogOverride=TRUE (button on GUI)
  443.  
  444. option on CommandPrompt door to log all commands user types (like DoorLog in /X)
  445.   (DoorLog in HBBS is a bit different...)
  446.  
  447. startup log
  448.  
  449. when locally uploading, duplicate files are not checked for.  This is maily due to the fact
  450. that no door is called yet for local uploads.
  451.  
  452. spell checker on messages!
  453.  
  454. add a file_id.1 into files with a one-line description..
  455.  
  456. util to convert aminet cd dirs to hbbs filelistings..
  457.  
  458. and a 1 id to the filelist format same as F but with only a one-line description..
  459.  
  460. create docs with a list of /X config settings in and show the user
  461. what the same things are in HBBS
  462.  
  463. change watch window font depending on conference..
  464.  
  465. you can currently write a USER mail to ALL !
  466.  
  467. have it so that you can enable different logs for different users.  for instance,
  468. say you have a user who's a bit dogdey you might want to enbale the doorlog for
  469. him, but not for everyone else...  Coooooooooooool!
  470.  
  471.  
  472. doubleclicking on a user name in a listview window should bring up an
  473. account editor with the users details in! :-)
  474.  
  475. make the G door accept NOPROMPT as an option.
  476.  
  477.  
  478. create a ST door so that sysop's can flag files for other users..
  479. --> you can do this anyway by editing the files in HBBS:System/Data/Taggedfiles/#?
  480.  
  481. add QUIET parameter to Tag_File
  482.  
  483. add a GL_KEEPPROMTIFBLANK which will return the prompt string (if specified) in
  484. N_ND->CurrentLine if the user delete's the prompt string and leaves a blank line!
  485.  
  486. make node, settings, and configure windows pop to front if already open.
  487.  
  488. add an [U]pload to the editor program..!
  489.  
  490. also, in the editor, check to see if the login type is a local login, if so, ask the
  491. sysop wether to use an actual GUI Text editor (like TTX) to edit the message...
  492.  
  493. set a button on the control to open up a node's "Settings" window!
  494.  
  495. change the door commands and how doors are run..
  496.  
  497.   Ideas
  498.  
  499.   call <Name>_Door_<n>  <name>_Data_<n> so it avoid confusion
  500.   when using something like SCREEN or ECHO for a door type.
  501.  
  502.   also you need to be able to specify the paramters that were typed at the bbs
  503.   prompt as options for doors, be you must also be able to add your own options
  504.   to them as well,  example:
  505.  
  506.   FR_Type_1=NORMAL
  507.   FR_Data_1=HBBS:Doors/User/FileReverse/FR.HBBS {nodenum} {bbsoptions} CONF
  508.  
  509.   FRS_Type_1=NORMAL
  510.   FRS_Data_1=HBBS:Doors/User/FileReverse/FR.HBBS {nodenum} {bbsoptions} HOLD
  511.  
  512.   where {nodenum} is replaced by the node number, {bbsoptions} are replaced by the
  513.   options that were typed at the bbs prompt..  so, if a user on node 3 types
  514.  
  515.   FR N -2
  516.  
  517.   the actual command executed would be
  518.  
  519.   HBBS:Doors/User/FileReverse/FR.HBBS 3 N -2 CONF
  520.  
  521.   much better than just appending the params to a program.  also like this
  522.   you can place the parameters in any order you like.. thus being able to cope with
  523.   far more programs and it also makes the program more flexible.  it also
  524.   reduces the amount of seperate doors you might need..
  525.  
  526.   also I need a DOOR_Continue(TRUE/FALSE) and associated
  527.   N_ND->DoorContinue.
  528.  
  529.   if a door sets door continue to false the next door will not be run
  530.   if the configuration for a door has more than one door associated
  531.   with the command.
  532.  
  533.   e.g.
  534.  
  535.   the download door a) calls the HBBS:Doors/<blah>/Download.HBBS, then
  536.   it would b) call the door HBBS:Doors/<blah>/QuickStats.HBBS.
  537.  
  538.   obviosly, the download door might be cancelled before we actually
  539.   transfer some files, so it would set DoorContinue to FALSE then
  540.   the quickstats door would not be run..
  541.  
  542. change GetLine()
  543.  
  544.   Ideas..
  545.  
  546.   instead of going TRUE,TRUE,0,blahh..  use FLAGS
  547.  
  548.   so we need these flags
  549.  
  550.   EDIT      // left/right cursor keys and backspace + delete
  551.   HISTORY   // allow cursor up/down to gothrough the history
  552.   DISPLAY   // display text on screen at all ?
  553.   LINEWRAP  // if reached maxlen and last key pressed was a non space
  554.             // char then copy all data back to the previous space char
  555.             // to N_ND->CurrentLineWRAP and return IN_GOTLINE
  556.   NORETURN  // does not print a "\r\n" when the user presses return
  557.   IMMEDIATE // returns when the user has typed in MaxLen chars
  558.             // don'tuse with linewrap :-)
  559.             // use immediate and noreturn for hoykey support.  -> COOL
  560.  
  561.   also we need to be able to prompt the user with a default string for an option.
  562.  
  563.   timeout is in micros
  564.  
  565.   An example prototype might be
  566.  
  567.   GetLine(Flags,PasswordChar,MaxLen,TimeOut,PromptStr);
  568.  
  569.  
  570.   the above example takes less params then the current version *AND* offers more
  571.   scope
  572.   -------------
  573.  
  574. existence of tagged files must be verifyied when the saved tags are loaded in
  575. again (when a user logs on, see node_input.c)
  576.  
  577. change str_CtrlScrnName from a set length variable to a string pointer, and allow
  578. changing between a public screen name and "CtrlScrn", that way you can hbbs on a WB
  579. screen.
  580.  
  581. Use this function more!!!
  582. -> HBBS_LogError(BBSGlobal->ErrorLogFile,ERR_GENERAL,outstr,TYPE_WARNING);
  583.  
  584. add options for /X help for sysop's and users to help them change between systems
  585. (i.e. when a sysop presses F10 wanting to log a user off tell him to press
  586. SHIFT+F10 instead of just F10..etc... do the same sort of things for door commands..)
  587.  
  588. when a node starts it must check the playpen and work for file and move/delete them
  589. accordingly. (check id of last user that called from log files..)
  590.  
  591. Add NamesNotAllowed files to Node_XX directories, don't make it a config file,
  592. just have a list of names so it's easier to add/remove names rather than having to
  593. change name_xx = name_xx when you remove a name from the middle of the list.
  594.  
  595. Add tones and tonnes of error messages that are logged in the logfile..
  596.  
  597. Add DOOR_HuntScreen() to door library to search for screens in the node
  598. directory and then the screens directory, with option for adding a specified access
  599. level.  e.g. DOOR_HuntScreen("Files",20); where it would search for Files_20.TXT...
  600.  
  601. make HBBS_SaveUser() or whatever to search for users with a status of
  602. user_overwritable
  603.  
  604. change ALL strncpy()'s to strNcpy()!!!  IMPORTANT!! (strncpy() does not *always* null terminate strings..)
  605.  
  606. add option "SkipOK" to Device config so that if you have a weird modem you
  607. can tell the bbs not to wait for the OK string after commands..
  608.  
  609. when control is opened on a 16 colour screen set the first 8 colours
  610. to the standard ANSI colours and set the next 4 colours to the usual WB colours.
  611. then set the dripens for drawing windows/gadgets etc to point to the usual colours
  612. --> nearly done, sets palette and dri-pens, but just can't get the background
  613.     of the screen and windows to be anthing other then colour 0... Hrmmm..
  614.  
  615.  
  616. get the Node program to run a door just after frontend called "Speed_XX.HBBS", where
  617. xx is replaced by the baud rate of the caller..
  618.  
  619. add timeout on doors,  best place would be where NODE looks at messages coming
  620. from the door program,  you could set a timer when the door has started (when you get
  621. a doorstart IO message) and see if it times out, if it does then cancel running that
  622. door.  Also you'd have to reset the timer everytime the node received a message
  623. from the door,  BUT, file transfers will be sending all their data via messages
  624. so you could only reset the timer on bog standard messages,  perhaps set up a new
  625. type of message for use only by transfer protocols that would be skipped...
  626.  
  627. have a button in the node's settings window to manually stop a door.  This is cool
  628. if a door has crashed and you want the system to continue..  also the timeout on the
  629. door function would need to call the same cleanup function.  was thinking of being
  630. able to pass the a pointer to the door you want to cancel as a parameter, to
  631. HBBS_CleanupDoor()
  632.  
  633. have option for sysop, so that they can choose to strip all ansi colour changes
  634. from the watch window, thus speeding up the user's display. (this would also be better
  635. if the sysop was using watch windows on a 2,4 or 8 colour screen.)
  636.  
  637. add time, bytes etc to the HBBS_ModifyString() function in HBBSNode.C.
  638. --> done, still need to add bytes to ModifyString() tho.
  639. --> need to write a door called "CREDSLEFT" which you pass a conference
  640.     number and it returns the amount of credits you have left in that
  641.     conference
  642.  
  643. add in developer docs and specify the point that you can't have config item options
  644.   as follows
  645.  
  646.   Item_XX
  647.   Item_XX_Blah
  648.  
  649.   as HBBS_RemoveCfgItem("Item_#?") would remove ALL the items above..
  650.  
  651.   instead the door coder must use options like these:
  652.  
  653.   Item_XX
  654.   Item_Blah_XX
  655.  
  656.   oh, and don't use ?'s or #?'s in item names :-)
  657.  
  658. state importance of taking a copy of N_ND->CurrentLine before passing it to another
  659. door as a parameter, in developer docs...
  660.  
  661. have userhandle, and status (u/l'd d/l'd pw failed, scanned, paged etc) all on the
  662. window title of a watch screen or window..
  663. --> handle, group and speed are displayed..
  664. --> have a little window that appears on the watch screen (if open) or the
  665. control screen that disaplsy stuff about the current user.
  666.  
  667. ToDone :-)
  668. ======
  669.  
  670. fix bug with a closed console screen sometimes crashing the system, to check do this:
  671. load up node3, close the screen, load up term. use nullmodem.device, unit 7.  and
  672. try and log in.  it crashed when you press return after typing in a correct handle..
  673. --> done, it was Node_Console.c's SetWatchTitles() on a closed window...
  674.  
  675. add @^PAUSE_TIMEOUT^@ with options timeout length
  676. --> done, it's @^TPAUSE^<seconds>@
  677.  
  678. make it so that if you pass 0 as a buffersize to HBBS_CopyFile() then it'll use
  679. a default value. (sysop specifyable...!! cool idea!)
  680. --> done, see BBSGlobal->CopyBufferSize
  681.  
  682. abort prompt when cancelling message
  683. --> done
  684.  
  685. implement bbsglobal->CallsEver
  686. --> done
  687.  
  688. fix who door, long names/handles cause it to fuck itself..
  689. --> done
  690.  
  691. if settings window is open, bring it to front
  692. --> done
  693.  
  694. write the following to the CallersLog file when a user logs off
  695. uploads, downloads, ulbytes, dlbytes, nukes, pages, msgs read, msgs written
  696. then it'll be dead easy to provide statistics for bulletins etc!
  697. --> done
  698.  
  699. fix small bug in @^SYSDOOR@ANNOUNCE OFF@, the command the gets run has two spaces
  700. between the node number and the OFF parameter instead of one.
  701. e.g. 19-JUN-1996 18:56:16 Handle: hydra, Conf: Amiga Warez, Door: HBBS:Doors/System/Announce/Announce.HBBS 3  OFF
  702. --> done
  703.  
  704. option to have a list of users that dooroverride is set to on for
  705. (i.e.  a list of suspect users that have been trying to play around with your bbs!)
  706. -->done, created SetSuspect system door
  707.  
  708. option for getline, GL_NODISTURB.  needs to make it so that if you specify a maxlen
  709. then it means it musn't move things on the same line after the input position
  710. (e.g.  see why on the sent door)
  711.  need to be able to have  "Enter Name: [            ]", at the moment the ] gets moved
  712. --> done
  713.  
  714. RAW input for doors (i.e. show a text fiel and let users press keys to pause it etc..)
  715. --> done, see DOOR_CheckRaw(Flags);
  716.  
  717. make node wait for SIGBREACK_CTRLC or sommat in the getline loop..
  718. --> nope, use CheckRaw() for checking for Ctrl-C pressed
  719.  
  720. create caller logs (ie, when a user logs on and at what speed and all that shite..
  721. --> done
  722.  
  723. create a history file for the wall with the users handle on it..
  724. --> done
  725.  
  726. ban ;'s from user handles and names (and anything else that might go into a config
  727. file :-)
  728. --> see HBBS+_HandleNameOK()
  729.  
  730. when downloading, display what was selected (start, goodbye, abort...)
  731. --> done
  732.  
  733. make the sentby used
  734. --> done, see AddDIZToList
  735.  
  736. error checking on ConfAcs loading... (problems if file does not exist)
  737. --> done, acount edit and checkuser have been updated
  738.  
  739. sentby ask door (see userdata structure)
  740. --> done, see AskSentBy
  741.  
  742. sentby attach to uploads
  743. --> Done, see AddDIZToList
  744.  
  745. implement LanguageName_XX and LanguageExtn_XX for screens...
  746. --> done
  747.  
  748. implement ConfAcs files, add checkuser to get it to check for a users confacs file
  749. beging present, if not write a msg to a log file
  750. (refs: Access/Levels/Level_List, System/Data/ConfAcs/#?)
  751. --> done
  752.  
  753. When displaying screens that use pause or call another door, if the user hangs
  754. up or times out the routine does not exit.  it continues displaying the screen
  755. and running more doors etc.
  756. --> fixed
  757.  
  758. fix enforcer hit when moving a failed upload in MoveFile door
  759. --> fixed
  760.  
  761. document list of all required directories
  762. --> done
  763.  
  764. fix enforcer hits when /'s are left off paths in "conflist"
  765. --> maybe fixed.
  766.  
  767. empty file_id.diz in file makes it so that the file is not added to the list, but the user
  768. still gets credits for the file. So fix!!
  769. --> a user CANNOT enter a blank file_id.diz anymore..
  770.  
  771. Create log file for every call to HBBS_LoadConfig(), HBBS_GetSetting() and HBBS_SaveConfig()
  772. this will help the sysop imensely!
  773. --> done, see hbbs:bbsglobal/logconfig and configlogfile options
  774.  
  775. JoinConference
  776. ==============
  777.  
  778.   changing to a conference tha a user can see but does not have access to results
  779.   in the error "Invalid Conference Number", it should be "Access Denied".
  780.   --> done
  781.  
  782.   Also if you use start join conference with no params and use a conference number
  783.   that you can see but don't have access to, you don't get any message.
  784.   --> done
  785.  
  786.   update join conference so that it takes not of the new N_ND->User.ConfAcs settings!
  787.   --> done
  788.  
  789. ReadMail
  790. ========
  791.  
  792.   make R (mail) start from the LAST message instead of the first (for /x people...:-)
  793.   --> Done
  794.  
  795. AwaitConnect
  796. ============
  797.  
  798.   F4 does not always work ?!?
  799.   --> fixed!
  800.  
  801.  
  802. struct MyDataStructure
  803. {
  804.   struct Node node;
  805.   char mystring[10];
  806. }
  807.  
  808. struct Node
  809. {
  810.   struct Node *ln_Prev;
  811.   struct Node *ln_Succ;
  812. };
  813.  
  814. struct List
  815. {
  816.   struct Node *lh_Head;
  817.   struct Node *lh_Tail;
  818. };
  819.  
  820. void test( void )
  821. {
  822.   struct List *mylist;
  823.   struct MyDataStructure *mydata;
  824.   struct Node *node;
  825.  
  826.   if (mylist=(struct List*)malloc(sizeof(struct List)))  // allocate the list
  827.   {
  828.     NewList(mylist); // initialise the list
  829.  
  830.     if (mydata=(struct MyDataStructure *)malloc(sizeof(struct MyDataStructure)))  // allocate some space for our data
  831.     {
  832.       strcpy(mydata->mystring,"test 1"); // make use of the data structure
  833.  
  834.       AddTail(mylist,(struct Node*)MyDataStructure); // add the data structure to the list
  835.     }
  836.  
  837.     if (mydata=(struct MyDataStructure *)malloc(sizeof(struct MyDataStructure)))
  838.     {
  839.       strcpy(mydata->mystring,"test 2");
  840.       AddTail(mylist,(struct Node*)MyDataStructure);
  841.     }
  842.  
  843.     // point mynode to the first node in the list
  844.     // the ln_Succ has to be NON zero for the node to be valid, if it is zero then we've reached the end of the list
  845.     // point mynode to the next node (node->ln_Succ)
  846.  
  847.     for (mynode=(struct MyDataStructure *)mylist->lh_Head; mynode->node.ln_Succ ;mynode=(struct MyDataStructure *)mynode.node->ln_Succ)
  848.     {
  849.  
  850.       puts(mynode->mystring);
  851.     }
  852.  
  853.     // now we have to free everything
  854.  
  855.  
  856.     while (mylist->lh_Head->ln_Succ) // does the list contain nodes ?
  857.     {
  858.       node=strlist->lh_Head;  // point to the start of the list.
  859.  
  860.       Remove(node); // remove the node from the list, this does't free any data, it just updates
  861.                     // pointers in the nodes surrounding it so that they don't point to it anymore.
  862.       Free(node);   // this free's the memory allocated to the node
  863.     }
  864.  
  865.     Free(mylist); // free the list itself.
  866.   }
  867. }
  868.